package br.com.cs.pojo.impl;

import br.com.cs.dao.jdbc.UsuarioJDBC;
import br.com.cs.exception.DAOException;
import br.com.cs.exception.PojoException;
import br.com.cs.model.Usuario;
import br.com.cs.pojo.UsuarioPojo;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

public class UsuarioPojoImpl extends BasePojoFactoryImpl implements UsuarioPojo{
    
    private static UsuarioPojoImpl instance = new UsuarioPojoImpl();

    public static UsuarioPojoImpl getInstance(){
        return instance;
    }

    @Override
    public void delete(Usuario usuario) throws PojoException {
        try {
            UsuarioJDBC.getInstance().delete(usuario);
            } catch (DAOException ex) {
            Logger.getLogger(UsuarioPojoImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new PojoException("Erro na operação: Remover usuario: "+usuario.getNome(), "Remover usuario: "+usuario.getNome()+".", ex);
            }
    }

    @Override
    public List getAll() throws PojoException {
        try {
            return UsuarioJDBC.getInstance().getAll();
        } catch (DAOException ex) {
            Logger.getLogger(UsuarioPojoImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new PojoException("Erro na operação: Recuperar lista de usuarios ", "Recuperar lista de usuarios.", ex);
        }
    }

    @Override
    public Usuario getByPrimaryKey(Integer id) throws PojoException {
        try {
            return UsuarioJDBC.getInstance().getByPrimaryKey(id);
        } catch (DAOException ex) {
            Logger.getLogger(UsuarioPojoImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new PojoException("Erro na operação: Recuperar lista de ususarios","Recuperar lista de usuarios.", ex);
        }
    }

    @Override
    public void save(Usuario usuario) throws PojoException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public List getByFilter(String filterName, String filterValue) throws PojoException {
        try {
            return UsuarioJDBC.getInstance().getByFilter(filterName, filterValue);
        } catch (DAOException ex) {
            Logger.getLogger(UsuarioPojoImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new PojoException("Erro na operação: ", "Recuperar categoria por filtro.", ex);
        }
    }

    
}
